home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / mx / tutorial1 < prev   
Text File  |  1989-12-22  |  24KB  |  420 lines

  1.           --------------------------------
  2.                    Mx Tutorial #1:  Basic Editing
  3.           --------------------------------
  4.  
  5.                          by John Ousterhout
  6.  
  7. This document is an introduction to Mx, which is a mouse-based editor for
  8. use with the X window system.  The best way to read this tutorial is on-line
  9. in an Mx window, so that you can try out the commands as they are introduced.
  10. To access this tutorial on-line, invoke the shell command "mx" with no
  11. arguments.
  12.  
  13. Simple Scrolling:
  14. ----------
  15. The first thing for you to learn is how to move around within a file, so that
  16. you can at least read the tutorial.  This is called "scrolling".  The easiest
  17. way to scroll is by "dragging" the document:  hold down the shift key with
  18. your left hand, place the pointer over the center of this window, press the
  19. left mouse button, and move the mouse up and down while holding the button
  20. down.  As you move the mouse, the document will move up and down in the
  21. window.  In the shorthand notation I'll use in the tutorial, what you just
  22. did is called "shift-left-dragging".  If you'd like to move the document
  23. more quickly, for example to browse through it quickly, try
  24. shift-right-dragging (use the right mouse button instead of the left).  In
  25. this case, the document will move a lot in response to very small mouse
  26. motions.
  27.  
  28. The vertical strip on the right side of the Mx window is called the
  29. "scrollbar".  A thin vertical rectangle is displayed inside the scrollbar.
  30. I call this the "elevator".  Its height and location indicate which portion
  31. of the file is visible in the window.  For example, if the top of the
  32. elevator is at the top of the scrollbar and the bottom of the elevator
  33. is halfway down the scrollbar, it means that the first half of the file
  34. is visible in the window.  Try dragging up and down and see how the elevator
  35. moves.
  36.  
  37. You can also scroll by pressing mouse buttons with the pointer over the
  38. scrollbar.  If you move the pointer over the scrollbar and then "middle-click"
  39. (press the middle mouse button and then immediately release it) the view will
  40. change so that the center of the elevator is at the pointer position.  If you
  41. left-click in the scrollbar, the contents of the window will move up so that
  42. the line that used to be next to the pointer is now at the top of the window.
  43. Right-clicking is the inverse of left-clicking:  it moves the contents of the
  44. window down so that the line that used to be at the top is now next to the
  45. pointer.  If you have a reasonably fast display, you'll probably find that
  46. it's more convenient to scroll by dragging than by clicking in the scrollbar.
  47.  
  48. Basics:
  49. -------
  50. Mx is a simple editor that allows you to examine and modify text files.  It
  51. provides basic editing functions such as insertion, deletion, copying,
  52. searching, and substitution.  It also supports multiple windows.  You can
  53. display several different files at the same time in different windows and
  54. copy information back and forth between them, and you can look at several
  55. different regions of the same file at the same time using a different
  56. window for each region.
  57.  
  58. Each Mx window contains several subwindows.  The top-most subwindow is
  59. normally a title bar displayed by the window manager;  it may also be
  60. a title bar displayed by Mx, if you've specified the value "yes" for the
  61. "showTitle" X default.  The title bar displays the name of the file
  62. you're editing.  If you've modified the file, then an exclamation point
  63. will appear after the file's name (or the word "Modified" will appear
  64. at the right side of the title bar).  Just underneath the title bar is
  65. the "menu bar", which contains the names of several pull-down menus,
  66. and underneath that is a message window, which currently gives the name
  67. and size of this file. Information and error messages will appear in
  68. the message window at various times during editing.  At the right side
  69. of the window is the scrollbar, which you're already familiar with.
  70. The rest of the window displays a few lines of the file you're editing.
  71. A few other subwindows will appear later on, while you're editing. For
  72. example, one of them will be used to enter strings for searching and
  73. replacement.
  74.  
  75. There are three ways that you can invoke operations in Mx: by positioning the
  76. pointer over the text of the file and clicking or dragging with the mouse, by
  77. typing keys on the keyboard, or by selecting menu entries with the mouse.
  78. For a simple example of each of these, first move the pointer over the leftmost
  79. "X" in the line below and left-click.  A little upside-down "V", called the
  80. "caret", will appear just to the left of the X.
  81.  
  82.             XXXX - play here
  83.  
  84. Second, type some characters on the keyboard.  Each keystroke invokes an Mx
  85. command to insert that character into the file just before the caret.  As
  86. you'll see later, various special keys, such as the control keys, can be used
  87. to invoke other Mx commands such as copying and deleting text.  Finally, for
  88. an example of a menu selection, move the pointer up to the menu bar (it's
  89. the horizontal strip at the top of the window just underneath the striped
  90. title bar), and position it over the word "Control".  The word will highlight.
  91. Press the left mouse button and hold it down.  This causes a menu to appear
  92. underneath the pointer.  With the button held down, drag the pointer down
  93. through the menu until the word "Undo" is highlighted, then release the mouse
  94. button.  This invokes the undo command, which will remove all the text you
  95. just typed in.
  96.  
  97. Each word in the menu bar corresponds to a different menu.  To scan through
  98. the menus, press the left mouse button with the pointer over "Control", and
  99. hold the button down.  Then drag the pointer to the right so that it passes
  100. in turn over each of the other words in the menu bar.
  101.  
  102. When an error occurs while Mx is executing a command, Mx will tell you in
  103. one of two ways.  For short messages, Mx will place the message in the message
  104. subwindow.  For an example of this, type control-Z on the keyboard:  there's
  105. no Mx command associated with this keystroke.  If an error message is long,
  106. or if Mx needs for you to make a decision, it will pop up a special window
  107. called a "notifier".  The notifier contains a message plus one or more options,
  108. which appear at the top of the notifier.  When you see a notifier, you must
  109. click on one of the options in order to tell Mx what to do.  Your screen will
  110. be frozen until you've responded to the notifier.  For example, insert some
  111. characters in this file then invoke the "Quit" entry in the "Control" menu.
  112. A notifier will warn you that you're about to lose the changes you just
  113. made to this file.  Click a mouse button on the "Skip command" option.
  114.  
  115. The Caret and Insertion:
  116. ------------------------
  117. The simplest operation in Mx is insertion.  If you type normal characters on
  118. the keyboard, they will be inserted in the file at the position of the caret.
  119. You can position the caret anywhere in the file by left-clicking or
  120. left-dragging.  If you make mistakes while you're typing, you can type
  121. control-h, BACKSPACE, or DELETE to delete the character just before the caret.
  122. Control-w will delete the entire word that precedes the caret.  Try inserting
  123. text at various positions within this file.
  124.  
  125. The Selection:
  126. --------------
  127. The selection is a special range of text used in operations like copying
  128. and deletion.  To select a range of characters, position the caret at one
  129. end of the range, then move the pointer to the other end of the range and
  130. right-click.  All of the characters between the caret and the pointer will
  131. become highlighted.  These characters constitute the selection.  Try changing
  132. the selection by moving the pointer somewhere else and right-clicking.  You
  133. can drag the end of the selection by moving the mouse with the right button
  134. held down, just as you can drag the caret by moving with the left button
  135. down.  Try selecting various ranges of text in this tutorial.  There can
  136. only be one selection at a time:  when you make one selection, the previous
  137. one disappears.
  138.  
  139. There are additional selection modes called "word selection" and "line
  140. selection".  To invoke word selection, point to a character in the middle of
  141. a word and left-click twice in a row (quickly) without moving the mouse.
  142. This is called "double-clicking", and will cause the entire word to be
  143. selected.  When you right-click now, Mx will ensure that only whole-words
  144. are selected.  If you triple-click the left button, then Mx will force the
  145. selection to consist of entire lines of the file.  Try making word and line
  146. selections.
  147.  
  148. A word is any collection of adjacent letters and digits.  Each punctuation
  149. character is considered to be a word by itself, except that the bracket
  150. characters "()[]{}<>" are treated specially.  When you use word selection
  151. on a bracket character, Mx finds the matching bracket and selects the entire
  152. range, including the open and close brackets.  Brackets may be nested.
  153. Double-click in the code fragment below and hold the left button down during
  154. the second click.  Then drag the pointer around to see what happens when it
  155. passes over the various brackets:
  156.  
  157.         if (template != NULL) {
  158.             x = (foo[index+2, y] + (x/y)*42)/(y+1);
  159.             y = 0;
  160.         }
  161.  
  162. If you only want to select a single character, there is a faster way than
  163. first left-clicking to position the caret at one side of the character and
  164. then right-clicking to select the character.  Instead, "roll" the mouse
  165. buttons: press left then immediately press right before you've released left.
  166. This will select the character under the pointer and also place the caret
  167. at the left side of the character.  If you hold one or both of the mouse
  168. buttons down after you've rolled, you can drag both the caret and the
  169. selection.
  170.  
  171. There are times when it's convenient to make a selection without moving
  172. the caret (e.g., you've already got the caret where you want it and you'd
  173. like to select some text to copy to the caret position).  To do this, hold
  174. the control key down while you select.  Control-left-click will select the
  175. character under the pointer without moving the caret, and control-right-click
  176. will select the range of characters between the pointer position and the
  177. character that you selected with control-left-click.
  178.  
  179. Copying and Deleting:
  180. ---------------------
  181.  
  182. The selection is used for many purposes in Mx, the most common of which are
  183. deleting and copying.  You can delete a range of text by selecting the text
  184. and then invoking the "Delete $sel" entry in the "Selection" menu.  Throughout
  185. the Mx menus, the term "$sel" refers to the selection.  Note that you can
  186. select the newline character at the end of a line (when it's selected, all of
  187. the white space at the end of the line is highlighted);  if you delete the
  188. newline character, the following line will be joined to the current line.
  189.  
  190. The "Copy $sel to caret" entry in the "Selection" menu will insert a copy of
  191. the selection at the position of the caret, and the "Move $sel to caret"
  192. entry in the "Selection" menu will move the selection to the caret position.
  193. Some people find it most convenient to first select the text to be copied
  194. or moved and then position the caret at the destination;  others find it more
  195. convenient to position the caret first, then hold the control key down while
  196. selecting the text.  Try using copy and delete to exchange the words "red"
  197. and "house" in the sentence below.  Then use move to put "red" back where it
  198. was originally.
  199.  
  200.         Thank goodness they're repainting their house red.
  201.  
  202. Saving Files and Leaving the Editor:
  203. ------------------------------------
  204. When you're ready to leave the editor, select the "Quit" entry in the
  205. "Control" menu.  This will destroy the X window.  It will also end the
  206. execution of Mx, if there are no other Mx windows open.
  207.  
  208. When you make changes to a file in Mx, those changes are not automatically
  209. reflected in the original copy of the file on disk.  To change the disk
  210. version of the file, you must "save" the file.  The "Save" entry in the
  211. "Control" menu will write the file back to disk.  Or, if you've modified the
  212. file and then try to quit without saving the file, Mx will warn you with
  213. a notifier and give you a chance to save the file or skip the quit command.
  214.  
  215. If you'd like to save the edits in a different file than the one you started
  216. out with, select the name of the file you'd like to save into and then invoke
  217. the "Save in file $sel" entry in the "Control" menu.  The only problem
  218. here is how to get the file name someplace where you can select it.  If it
  219. already appears on the screen somewhere, just select it.  If you use Tx for
  220. your terminal emulator, you can type the file name in a Tx window and
  221. select it there.  As a last resort, open the command subwindow by invoking
  222. the "Open command subwindow" in the "Window" menu.  The caret should
  223. appear in the small subwindow that just appeared at the bottom of the
  224. window.  Then type the file name there and select it for use in saving
  225. the file.  After saving the file, you can make the command subwindow go
  226. away by getting the caret into the command subwindow (if it isn't there
  227. already, invoke the "Open command subwindow" menu entry again, or left-click
  228. in the command subwindow) and typing control-q.  In general, typing
  229. control-q in an Mx window or subwindow is a request to make the (sub)window
  230. go away.
  231.  
  232. Bindings:
  233. ----------
  234. The menus are convenient for learning because they're easy to browse through
  235. to find commands.  However, if you use the menus a lot you won't be able to
  236. edit very quickly.  Fortunately, many of the Mx commands can be invoked
  237. by typing keys as well as by selecting menu entries.  The keystrokes are
  238. called "bindings":  a particular key or sequence of keys is "bound" to an
  239. Mx command.  If there is a keystroke sequence equivalent to a menu entry,
  240. the binding appears at the right side of the menu entry.  For example, the
  241. "Copy" entry in the "Selection" menu shows the binding "C-v", which is an
  242. abbreviation for "control-v".  The "Delete" entry in the same menu has the
  243. binding "control-d".  These two bindings and the control-q binding
  244. mentioned above are the most important ones;  I suggest that you learn
  245. them immediately and use them instead of the menu entries.  You can
  246. gradually learn other bindings as you become more familiar with the system.
  247. To get information about all of the default bindings, invoke the "Info on
  248. default key bindings" entry in the "Help" menu.
  249.  
  250. The binding "M-v" in the "Selection" menu means "meta-v", which means
  251. different things on different keyboards.  On Sun-3 keyboards, "M-v" means
  252. first press either the "Left" or "Right" key (next to the space bar),
  253. then press "v" while holding down "Left" or "Right".  The term "ESC" refers
  254. to the escape key.  For example, the binding "ESC f" means first type the
  255. escape key, then the "f" key.
  256.  
  257. You can change the bindings to eliminate old ones and define new ones if
  258. you wish.  You can also modify the menus, or even change the meanings of
  259. normal keystrokes (for example, you could arrange things so that typing
  260. the space character caused the selection to be deleted, if that turned out
  261. to be desirable).  For more information on how to do this see the "bind"
  262. command in the Mx manual entry.
  263.  
  264. Undoing and Crash Recovery:
  265. ---------------------------
  266. While you edit, Mx keeps a log of every modification that you make to the
  267. file.  The log is used for two purposes:  undoing and recovery.  If you ever
  268. make a change and then wish you hadn't, you can invoke the "Undo" entry in
  269. the "Control" menu or type the "C-u" binding.  This will cause the last
  270. modification you made to the file to be undone.  If you undo several times
  271. in a row without any intervening file modifications, each invocation will undo
  272. the next older action, all the way back to the beginning of the edit session.
  273. Make a series of changes to this file, then undo them. 
  274.  
  275. Normally, each user-invoked action, such as a keystroke or button click or
  276. menu selection, constitutes one event as far as undoing is concerned.  Thus
  277. if you copy a huge selection, the whole copy will be undone at once.  The
  278. only exception to this rule is that if you type in a bunch of text on the
  279. same line, then all of the text will be undone together (i.e. you don't have
  280. to invoke undo once for each character; use backspace or control-W if you
  281. only want to erase a few characters).  If you type in many lines of text in
  282. a row, then the type-in will be undone one line at a time.
  283.  
  284. The undo actions are recorded in the log, so they can be undone also. However,
  285. if you undo something and then wish you hadn't, you can't just undo again:
  286. that will undo the next next older action, rather than undoing the undo.
  287. Instead, hit the space bar, which inserts a space character in the file.
  288. This (or any other modification to the file) resets the undo mechanism so that
  289. the next undo refers to the most recent modification to the file;  now invoke
  290. undo twice:  the first will undo the space insertion and the second will undo
  291. the unwanted undo.
  292.  
  293. The second purpose of the log is to allow recovery if Mx crashes during an edit
  294. session or if your machine goes down unexpectedly.  If a crash occurs, the
  295. log file will be left on disk.  The log file has a name beginning with "Mx"
  296. and is usually stored in the directory containing the file being edited.  If
  297. that directory isn't writable, then Mx stores the log file in your home
  298. directory.  To recover all the changes you made during a crashed edit
  299. session, just re-run Mx on the same file.  Mx will locate the log file and
  300. pop up a notifier giving you the choice of recovering or deleting the old
  301. log file.  If you select recovery, Mx will scan through the log file and
  302. update the file to reflect all of the changes made in the crashed edit
  303. session.  With the recovery mechanism, you should never lose any modifications
  304. except for those on the line where you were working when the crash occurred.
  305. You can try out the recovery features by starting up Mx and then killing it
  306. from the shell.
  307.  
  308. Searching and Substitution:
  309. ---------------------------
  310. Mx provides mechanisms that allow you to search through a file for a
  311. particular sequence of characters, or to replace a given sequence of
  312. characters with another sequence provided by you.  To see how this works,
  313. invoke the "Search forward" entry in the "Search" menu.  The first time you
  314. invoke this operation, Mx will open a new subwindow just under the menu bar,
  315. called the "search subwindow".  It contains two entry areas, where you can
  316. type in a search string and a replacement string.  To enter a search string,
  317. get the caret into the search entry (if it isn't already there) by moving
  318. the pointer over the entry and left-clicking.  Now you can type in a search
  319. string.  The editing characters "C-h" and "C-w" work in the search subwindow,
  320. and you can also use the selection and "C-d" to edit the search and
  321. replacement strings.  You can use "C-v" to copy information from almost
  322. anywhere on the screen to the search and replacement strings.
  323.  
  324. Enter the characters "the" as the search string.  There are four different
  325. ways you can invoke searching now.  The simplest is to re-invoke the "Search
  326. forward" entry in the "Search" menu.  Mx will search for the next occurrence
  327. of the string "the", starting at the caret location, and will select that
  328. occurrence.  You can also search using the "C-f" binding, or by typing
  329. RETURN when the caret is in the search string, or by middle-clicking on the
  330. search string.  These four approaches all produce the same result.  The
  331. "Search" menu provides a "Search backward" entry to scan in the opposite
  332. direction.  If one end of the file is reached during a search, Mx skips to
  333. the opposite end of the file and continues.
  334.  
  335. If you don't want to type the search string into the search subwindow, you
  336. can also select the string you'd like to search for and use the "Search
  337. forward for $sel" and "Search backward for $sel" menu entries.
  338.  
  339. To make substitutions, enter a replacement string into the search subwindow
  340. and invoke the "Replace" command in the "Search" menu.  This will replace
  341. the selection with the replacement string.  You can also invoke replacement
  342. by typing RETURN in the replacement string, by middle-clicking on the
  343. replacement string, or by typing the "C-r" binding.
  344.  
  345. By default, search and replacement strings are regular expressions in
  346. the style of the vi text editor.  If you'd prefer for searching and
  347. replacement to be done by exact matches only, without regular expressions,
  348. set the "noRegExps" variable to 1.
  349.  
  350. If you'd like to replace all the instances of one string by another string,
  351. you have two choices.  One possibility is repeatedly to type "C-f" and "C-r"
  352. to step through the instances one at a time.  Or, you can select a range of
  353. text in which you'd like to make the substitution and invoke the
  354. "Substitute throughout $sel" entry in the "Search" menu.  This will replace
  355. all instances of the search string in a single operation.  Try using these
  356. commands to replace "the" with "my" in several areas of this document.
  357. The "Substitute everywhere" entry in the "Search" menu will make the
  358. substitution throughout the file.
  359.  
  360. Two other bindings are useful when searching and replacing:  "ESC-f" will
  361. clear the search string entry and move the caret there, so you can type
  362. in a new search string;  and "ESC-r" will clear the replacement string
  363. entry and move the caret there
  364.  
  365. When you no longer need the search subwindow, you can get rid of it by
  366. getting the caret into it (left-click on the window if necessary) and
  367. typing "C-q".
  368.  
  369. Using Multiple Windows:
  370. -----------------------
  371. Mx allows you to open several windows on the same or different files and
  372. copy information back and forth between them.  Invoke the "New window on same
  373. file" entry in the "Window" menu.  The new window will display the same file
  374. as the old window, and you can modify the file from either window.  Try making
  375. changes in both windows:  you'll see the selection and the changes in each of
  376. the windows.  You can also open a new window on a different file by selecting
  377. the file's name and invoking the "New window on $sel" entry in the "Window"
  378. menu.  Once this is done, you can use the selection to copy information back
  379. and forth between the windows.
  380.  
  381. The "Window" menu also includes additional entries for switching the current
  382. window from one file to another ("See file $sel"), opening a new window (or
  383. switching the current window) to display the definition of a symbol using the
  384. tags facility, and adjusting the view in a window to display a particular line
  385. number (e.g. for compiler error messages).
  386.  
  387. Indentation:
  388. ------------
  389. Mx automatically manages line indentation.  Whenever you type RETURN to start
  390. a new line, Mx will indent the new line to match the indentation of the
  391. previous line.  Whenever you move the caret away from a line Mx will clean up
  392. the line's indentation:  if there is any white space at the beginning of the
  393. line, Mx replaces as much of it as possible with tabs (one tab for each eight
  394. spaces).  In the lines below, position the caret at the end of the various
  395. lines and type RETURN to see how auto-indentation works:
  396.  
  397.         This line is indented.
  398.             This line is indented even more.
  399.  
  400. The "Indent" menu provides several commands to modify the indentation of
  401. lines.  "Indent selected lines 4" will shift all the lines in the selection
  402. right by 4 spaces, and "Outdent selected lines 4" will shift the lines left
  403. by 4 spaces.  "Indent caret line 4" and "Outdent caret line 4" do the same
  404. thing for the line containing the caret.  The last menu entry will eliminate
  405. all indentation in the selected lines.
  406.  
  407. History and Repeating Commands:
  408. -------------------------------
  409. Mx automatically records commands you've invoked so that they can
  410. be replayed later.  For full details, read about the "history" command in
  411. the manual page.  The simplest mechanism is "Do again", which is
  412. available in the "Control" menu or with the "C-a" binding.  This will
  413. repeat all the commands you invoked between the last two button presses,
  414. searches, or undos.  For an example of how this works, select "Test"
  415. below, then delete it and type "Foo" in its place.  Then select "Test2",
  416. and type "C-a";  you can continue with "Test3" and "Test4" also.
  417.  
  418.         Test        Test2        Test3        Test4
  419.  
  420.